package com.sanjin.dubbo.transport;

/**
 * 该类主要关注通道的处理逻辑
 *
 * @author: jiangxch
 * @date: 2021/2/16 下午8:07
 */
public interface ChannelHandel {
    
    /**
     * 与remoteServer建立连接
     * @param channel
     */
    void connect(Channel channel);
    
    /**
     * 断开连接
     * @param channel
     */
    void disConnect(Channel channel);
    
    /**
     * 向通道发送消息
     * @param message
     */
    void send(Channel channel,Object message);
    
    /**
     * 处理从channel接收到的消息
     * @param channel
     * @param message
     */
    void onReceive(Channel channel,Object message);
    
    /**
     * 处理通道产生的异常
     * @param channel
     * @param throwable
     */
    void caught(Channel channel, Throwable throwable);
}
